//子类：教师（继承Person）
public class Teacher extends Person {
 // private权限：仅本类可访问，子类/跨包均不可直接访问
 private Course course; // 教师所授课程（业务要求：每名教师授1门课）

 // 子类含参构造：先通过super()初始化父类属性，再初始化子类特有属性
 public Teacher(String teacherId, String name, String gender) {
     super(teacherId, name, gender); // 调用父类Person的构造方法
 }

 // 教师特有方法：开课（创建Course对象并关联自身）
 public Course openCourse(String courseId, String courseName, String location, String time) {
     this.course = new Course(courseId, courseName, location, time, this);
     System.out.println("教师" + super.name + "成功开设课程：" + courseName);
     return this.course;
 }

 // 重写父类抽象方法：打印教师授课表（工作单）
 @Override
 public void printWorksheet() {
     System.out.println("\n========== 教师工作单 ==========");
     System.out.println("教师ID：" + super.id);
     System.out.println("教师姓名：" + super.name);
     System.out.println("所授课程：" + (course == null ? "未开课" : course.getCourseName()));
     if (course != null) {
         System.out.println("上课地点：" + course.getLocation());
         System.out.println("上课时间：" + course.getTime());
     }
     System.out.println("===============================");
 }

 // Getter方法：提供子类特有属性的访问接口
 public Course getCourse() {
     return course;
 }
}